約 5,295,173 件
https://w.atwiki.jp/android/pages/21.html
Hello, Android! 第一印象は重要だ。それは、あなたが、このアンドロイドというフレームワークを手にして、"Hello, World!"を書いたときに受ける第一印象だ。そう、アンドロイドにおいて、それはとても簡単なのだ。下記を見て欲しい。 プロジェクトを作成する。 UIを構築する。 コードを走らせる Hello, Android 以下のセクションでそれをつまびらかに語っていこう。 UIをXMLのレイアウトにアップグレードする。 プロジェクトをデバッグする。 Eclipseなしでプロジェクトを作成する。 さあ行こう。 プロジェクトを作成する プロジェクトを作成することはできる限り簡単にしてある。Eclipseプラグインで、Androidの開発環境のスナップを作成することが可能だ。Eclipse 3.3以上(Europa)と、Eclipse用のAndroidプラグインは用意してあるかい?それらをインストールしてから次に進んで欲しい。 最初に、"Hello, World!"をビルドするための、簡単な要約を述べておこう。 File- New- Project menuから、"Android Project"を新しく作成する。 New Android Project ダイアログで、プロジェクトの詳細を埋める。 なにかを表示するための自動生成されたテンプレートコードを編集する。 さあ、行こう!以下でそれぞれのステップの詳細を説明しよう。 1.新しい"Android Project"を作成する。 Eclipseから、File- New- Projectと選択して欲しい。もし、EclipseのAndroidプラグインがきちんとインストールされているなら、表示されるダイアログの中に、"Android"と名前のついたフォルダがあり、その中には、"Android Project"があるはずだ。 "Android Project"を選択し、"Next"を押そう。 2.New Android Project ダイアログで、プロジェクトの詳細を埋める。 次の画面で、プロジェクトに関係する詳細を入力する。たとえば次の例のように: それぞれの入力欄が意味するところは次のようになる。 Project Name プロジェクトを保存したいディレクトリもしくはフォルダの名前 Package Name これはパッケージの名前空間だ。ちょうどJavaのように。あなたのソースコードは全てここより下位におかれるようにする。ここには、自動生成されたスタブのパッケージ名がすでにセットされているはずだ。パッケージ名は、システムにインストールされるすべてのパッケージ間で、ユニークである必要がる。というわけで、あなたのアプリケーションに標準的なドメイン命名スタイルを使うことはとても重要だ。上述の例では、パッケージ名として、ドメイン"com.google.android"を使用している。あなたの所属する組織にみあった、唯一の名前を使用するといいだろう。 Activity Name ここでは、プラグインによって生成されるスタブクラスの名前が書かれている。これは、AndroidのActivityクラスのサブクラスである。Activityは単純なクラスで、それ自体で実行させ、処理させることができる。希望するならUIも作れるが、そうしなくても構わない Application Name ここにはユーザーが目にするアプリケーションのタイトルを入力する。 "Use default location"チェックボックスをONにすることで、プロジェクトファイルの保存場所を変更することができる。 3.自動生成コードを編集する。 After the plugin runs, you ll have a class named HelloAndroid that looks like this プラグインを実行すると、下記のような、HelloAndroidクラスが出来上がっているがわかるだろう。 public class HelloAndroid extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); } } 次のステップで、これを修正していこう! UIを構築する。 プロジェクトをセットアップしたあとは、当然、それを修正していく。以下がその完成品だ。1行ずつ解剖していこう。 public class HelloAndroid extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); TextView tv = new TextView(this); tv.setText("Hello, Android"); setContentView(tv); } } このサンプルのコンパイルをするために、インポートセクションに、"import android.widget.TextView;"を追加するしなければらいことを注意しよう。 Androidでは、ユーザーインターフェースは、Viewsと呼ばれるクラス階層で成り立っている。Viewはシンプルな描画オブジェクトである。たとえば、ラジオボタンであるとか、アニメーションであるとか、(今回のケースは)テキストラベルなどだ。テキストを扱えるVieewのサブクラスの名前は、単に、TextViewとなる。 下記が、TextViewクラスを生成する方法だ。 TextView tv = new TextView(this); TextViewクラスのコンストラクタに渡している引数は、Android Contextのインスタンスである。Contextは単にシステムへ渡すハンドルである。そのハンドルは、リソースを解決したり、データベースや設定などにアクセスするために供給されている。ActivityクラスはContextから派生している。それゆえ、HelloAndroidクラスはActivityクラスのサブクラスであり、コンテキストであるのだ。だから、"this"参照をTextViewに渡すことができる。 一度TextViewを生成してしまえば、何を表示するのか伝えてあげる必要がある。 tv.setText("Hello, Android"); とくに特筆すべきことはないだろう。 ここまでで、TextViewを生成し、どんなテキストをディスプレイに表示すべきかを伝えた。最後のステップは、実際のディスプレイに、TextViewをつなぐことである。こんな感じに。 setContentView(tv); ActivityのsetContentViewメソッドは、ActivityのUIにどのViewが関連付けられるべきかをシステムに通知する。もし、Activityがこのメソッドをコールしないなら、UIは何も表示されないし、システムは真っ白けの画面を表示することだろう。今のところの目的は、何でもいいからテキストを表示することなので、作ったばかりのTextViewを渡してしまえばよい。 これで、アンドロイドでの"Hello, World"のコーディングは完了だ。もちろん、つぎは、実行させるてみよう。 コードの実行 Hello, Android Eclipseプラグインのおかげで、とても簡単にあなたのアプリケーションを実行することができる。メニューからRunを選択すると、下のようなダイアログが表示される。 次に、"Android Application"を選択しよう。そして、アイコンの左上をクリックしよう(+印とともに、画面に描画されているやつだ)。それとも、単に、"Android Application"をダブルクリックするだけでいい。"New_configuration"と名づけられた新しいランチャーダイアログが表示されるはずだ。 名前を何か適当なもの、たとえば、"Hello, Android"と変更して、"Browse"ボタンを押下して、あなたのプロジェクトを選択しよう。(もしあなたが2個以上のAndroidプロジェクトをEclipseで開いていたら、正しいものを選択しているかどうか確かめてほしい)プラグインは、自動的に、あなたのプロジェクトからActivityのサブクラスをスキャンして、"Activity "ラベルの下のドロップダウンリストに追加してくれる。デフォルトでは、あなたは、"Hello, Android"プロジェクトしか作っていないから、単に続けるだけでいい。 "Apply"ボタンを押下しよう。こういう風になる。 これで成功だ。"Run"ボタンを押してみよう。Androidエミュレータがスタートするはずだ。起動完了したら、あなたのアプリケーションが表示されるだろう。今までいったことが全部できていれば、次のような画面を目にすることができるはずだ。 これが、Androidにおける、"Hello, World"だ。とっても簡単だったろう?チュートリアルの次のセクションでは、Androidについて、より詳細な価値ある情報を知ることができるだろう。 UIをXMLレイアウトにアップグレードする。 さっき終わらせた。"Hello, World"サンプルは、いわゆる"programmatic"なUIレイアウトだ。このことは、UI記述をソースコードに直接書いてビルドしているってことだ。UIプログラミングがおわっても、変更にもろいやりかただってことはわかるだろう。たとえば、ちょっとしたUIのレイアウトの変更が、大きなソースコードの変更につながったりとか。Viewクラス同士のつながりは忘れやすいし、それがデバッグに時間を浪費することにつながる。 そんなわけで、Androidでは、もうひとつのUI構築のモデルを提供している。それが、XMLベースのレイアウトファイルだ。このコンセプトを説明するには一例をあげるのが一番だね。ここに、今終わらせたプログラミングベースのものと同じ振る舞いをするXMLレイアウトファイルを用意しよう。 ?xml version="1.0" encoding="utf-8"? TextView xmlns android="http //schemas.android.com/apk/res/android" android layout_width="fill_parent" android layout_height="fill_parent" android text="Hello, Android"/ たいていの、Andorid XMLレイアウトファイルの構成はシンプルだ。タグのツリーからなっており、それぞれのタグは、Viewクラスの名前になっている。この例で言えば、TextView一要素だけからなる シンプルなツリー構成だ。XMLレイアウトファイルには、タグ名として、Viewクラスを継承したものなら、自作のものでも何でも使える。これは、Webの構築モデルからインスパイアされたものなんだ。ちょうど、UIの表示とデータを処理するアプリケーションロジックを分離できるみたいに。 この例では、4つのXML属性がある。以下が、その意味の要約だ。 Attribute 意味 xmlns android XMLネームスペース定義だ。これは、Androidネームスペースで定義された、共通の属性を参照するということをAndroidツールに知らせている。 android layout_width この要素は、このViewが消費する画面幅がどれくらいなのかを定義する要素だ。この場合で言えば、"fill_parent"を使っているが、画面全体の幅を指定しているってことになる。 android layout_height android layout_widthto同じようなものだが、これは高さを意味する。 android text これは、TextViewの内容をセットするものだ。この例でいえば、いつもの"Hello, Android"だ。 そう。XMLレイアウトはざっとこんな感じだ。けど、どうやってそれを組み込むと思う? resディレクトリの下に入れればOKだ。"res"は"resources"をはしょったもので、そのディレクトリには、アプリケーションに必要なコード以外の一式を詰め込んでおけばいい。たとえば、イメージや、ローカライズされた文字列や、XMLレイアウトファイルだ。 Eclipseプラグインは、XMLファイルを作成してくれる。上の例では単にそれを使わなかっただけだ。Package Explorerで、resフォルダの内容を開いて、main.xmlファイルに編集して、上のテキストをコピーして、変更を保存しよう。 Package Explorerのソースコードフォルダから、R.javaファイルを開いてみよう。次のようなものが表示されるはずだ。 public final class R { public static final class attr { }; public static final class drawable { public static final int icon=0x7f020000; }; public static final class layout { public static final int main=0x7f030000; }; public static final class string { public static final int app_name=0x7f040000; }; }; プロジェクトのR.javaファイルに全てのリソースにインデックスが定義されている。このクラスをソースコードのなかで、プロジェクトで使用しているリソースへの参照の速記方法の一つとしてつかえばいい。これはEclipseのようなコードコンプリート機能を持つIDEでは特にパワフルだ。なぜなら、その機能のおかげで、すばやく、インタラクティブに探しているリソース参照を配置することができるからだ。 この例で注意すべきは、"layout"と命名されたインナークラスと、"main"と命名されたフィールドだ。新しいXMLレイアウトファイルを追加したら、エクリプスプラグインは通知し、R.javaファイルを再生成するだろう。つまり、他のリソースファイルをプロジェクトに追加するなら、R.javaファイルも更新されるのがわかるだろう。 最後に、あなたのHelloAndroidコードを、ハードコーディングされたバージョンからXMLのUIを使うように修正する必要がある。新しいクラスはこのようになるはずだ。見ればわかるように、ソースコードはよりシンプルになった。 public class HelloAndroid extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); } } この変更を加える際に、コピーアンドペーストをしないことだ。Rクラスに働くコードコンプリート機能を試してみよう。これがかなり使える機能だってことがわかるだろう。 変更を加えたら、アプリケーションを再起動してみよう。することと言えば、緑のRunと書かれた矢印アイコンをクリックし、Run - Run Last Launchedをメニューから選択するだけだ。すると、さっき見たのと同じものが表示されるはずだ!結局のところ、2つの違ったレイアウトのアプローチは同じ結果をもたらすわけだ。 XMLレイアウトの作成はもっと説明することがあるんだが、今ここで説明してもしょうがない。このアプローチのもっと詳細な情報のためには"Implementing a Uset Interface"ドキュメントを読んで欲しい。 プロジェクトのデバッグ EclipseのAndroidプラグインは、Eclipseデバッガにうまく統合されてもいる。それをデモするために、コードにバグを混入させてみよう。次のようにHelloAndroidのソースコードに変更を入れて欲しい。 public class HelloAndroid extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); Object o = null; o.toString(); setContentView(R.layout.main); } } これは単に、NullPointerExceptionを入れてみただけだ。もう一度アプリケーションを実行させると、すぐに次のような画面を見るだろう。 何がおかしかったのかを特定するために、ソースコードの"Object o = null;"と書かれた行にブレークを貼ってみよう。(ブレークポイントを貼るためには、Eclipseの行番号の左の領域をダブルクリックすればいい)それから、Run - Debug Last Launched を選択してデバッグモードに入ろう。エミュレータが再起動すると、セットしたブレークに到達した時点でアプリケーションは中断する。EclipseのDebug Perspectiveを通してどんなアプリケーションでもステップ実行ができる。 Eclipseなしでプロジェクトを作成する。 もし、あなたがEclipseを使用しないなら(たとえば別のIDEがいいだとか、そもそも単にテキストエディタとコマンドラインツールが使いたいなら)Eclipseプラグインはあなたの助けにはならないだろう。でも心配しなくていい。Eclipseを使用しないからといって、あなたは何も便利さを失わないのだ。 EclipseのAndroidプラグインは、Android SDKに同梱されているツール群のラッパーにすぎないからだ。(ツール群とは、エミュレータや、aapt,adb,ddmsなどだ。ほかにもどこかにドキュメントがあるだろう)それゆえ、他のツールを使って、それらをラッピングすることは可能だ。たとえば ant のビルドファイルを使うなどして。 Android SDKは、"activityCreator.py"とネーミングされたPythonスクリプトも含んでいる。それは、antと互換性のあるbuild.xmlファイルはもちろんプロジェクトに必要なソースコードとスタブディレクトリを全て作成してくれる。これは、コマンドラインでプロジェクトをビルドできることと、あなたの好きな他のIDEと統合できることを意味する。 たとえば、Eclipseを通してさっき作ったものと似たようなHelloAndroidプロジェクトを作成するためには、次のコマンドを使えばいい。 activityCreator.py --out HelloAndroid com.google.android.hello.HelloAndroid プロジェクトをビルドするためには、 ant コマンドを走らせればいい。コマンドが成功すれば、 bin フォルダの下にHelloAndroid.apkと名づけられたがファイルがあるはずだ。この.apkファイルは、Android Packageで、 adb ツールを使ってエミュレータにインストールして実行できる。 これらのツールについての使用方法をもっと知りたければ、上で紹介されたドキュメントを読んで欲しい。
https://w.atwiki.jp/api_programming/pages/195.html
下位ページ インテントとインテントフィルタ サービス(Service) ストレージオプション フラグメント(Fragment) プロセスとスレッド(processes and threads) リストビュー(List View) レイアウト(Layout) 入力コントロール(Controls) 設定(Setting) 通知(Notification) Content スピナーコントロールの設定レイアウトの準備 選択肢の設定string.xmlでの設定 プログラム側から値を選択する アクティビティアプリの閉じられ方で、挙動が異なる アクションバーの代わりに、ツールバーを使うアクションバーを消す ツールバーをレイアウトに追加する Activity内で、アクションバーの代わりに使う記述をする スライドメニューを実装するドロワーレイアウトを作成する ドロワービューの中身を準備するListViewで作る 別のXMLファイルで作る ドロワーのオープン・クローズを実装する バックグラウンド処理(サービス) 閉じられても動作するサービスを動かすServiceクラスの作成 Activityから、作成したサービスを動かす 加速度センサの情報を受ける 回転角の情報を受け取る回転角の解釈 画面の回転を抑制するAndroidManifest.xmlで抑制する 動的に(プラグラム内で)で抑制する インテントにオブジェクトの情報を乗っけるparcelable をインプリメントしたクラスをつくるParcelable.Creater フィールドの実装 BundleやIntentに情報を乗せる Activity側で受ける 複数の情報をリストにして表示する バイブレーションを一定時間、作動させるパーミッションの追加 Vibratorオブジェクトを生成する vibrateを実行する 通知バーにバックグラウンド起動中の表示を出す 裏返したときの方向で、記録を分ける メニューのバーを設定するメニューリソースを準備するフォルダの作成 リソースファイルの作成 設定したメニューファイルを、Activityのメニューバーに評させる メニューの選択を受け取る処理を作る チェックボックスを動作させる 設定画面を設定する/設定情報をローカルストレージに残す 記録内容をGoogleスプレッドシートに記録する 記録内容をGoogleカレンダーに記録するブラウザでURLを開く ブラウザを開くURIとして、認証ページを指定する リダイレクトを受け取る 受け取ったリダイレクトをデータに紐解く codeを送って、tokenを受け取る tokenを保存する 終了時間と開始時間から、時間の計算をする リストビューで独自レイアウトを設定する USBデバッグ リリースビルド スピナーコントロールの設定 [部分編集] レイアウトの準備 Spinner android id="@+id/planets_spinner" android layout_width="fill_parent" android layout_height="wrap_content" / 選択肢の設定 string.xmlでの設定 まずは、string.xmlに文字配列を作る string-array name="planets_array" item Mercury /item item Venus /item item Earth /item /string-array この文字配列をアダプタにして、スピナーコントロールにアダプタをするリソースのアダプタ化には、ArrayApapter.createFromResource を使用できる。simple_spinner_item はデフォルト外観を設定している。通常はこれで良し。 setDropDownViewResource(int) は選択時に一覧を表示するのに使う。なくても一応ドロップダウンは出てくるが、ちょっとしょぼい? Spinner spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter CharSequence adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); createFromResource - ArrayAdapter | Android Developers setDropDownViewResource - ArrayAdapter | Android Developers プログラム側から値を選択する Spinner.setSelection で位置を指定する。その位置を取得するにはAdapterを使う。 使っているアダプタを取得するobjSpinner.getAdapter でアダプタを取得できる objAdapter.getPosition("...") でセレクタの位置を取得値が見つからなかったら -1 が返る objSpinner.setSelection に先程取得した位置を設定する ArrayAdapter spinnerAdapter = (ArrayAdapter) objSpinner.getAdapter(); int i = spinnerAdapter.getPosition("value"); objSpinner.setSelection(i); getAdapter - AbsSpinner | Android Developers getPosition - ArrayAdapter | Android Developers setSelection - AbsSpinner | Android Developers アクティビティ アプリの閉じられ方で、挙動が異なる onDestroyが呼ばれない限りは、Serviceを使わずとも、 ↓にある通り、ホームボタンとバックボタンでアプリケーションから離れた場合で挙動が違う。 https //kokufu.blogspot.jp/2011/03/activity.html 説明として、 ホームボタン:ホームアプリケーションが起動している バックボタン:Activityスタックからポップしている と書いてあったが、気持ち悪いのは、□ボタンを押すとあたかもまだ生きているかのように、アプリケーションリストに表示されるから。画面上に残っているが実際には onDestroy で消えている。 このあたりが、「アプリケーションをスワイプして消しても消さなくてもメモリにはそれほど影響しない」ということなんだろうか。 アクションバーの代わりに、ツールバーを使う [部分編集] 今後の拡張性から、アクションバーよりツールバーを使ったほうが良い、という記述をちょこちょこ見かけるが、Android Studioでプロジェクトを作ると、基本はアクションバーが設定されている。これをツールバーに置き換える。 アプリバーの追加 | Android Developers Toolbar | Android Developers AndroidのToolBar(新しいActionBar)メモ | Qiita アクションバーを消す res/values/styles.xmlで AppThemeのテーマを変更する style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar" ツールバーをレイアウトに追加する android.support.v7.widget.Toolbar android id="@+id/toolbar" android layout_width="match_parent" android layout_height="wrap_content" / レイアウトの@android */* ,?attr/* ,?* ,?android attr/* の違い | Qiita Activity内で、アクションバーの代わりに使う記述をする /* ToolBarの設定 */ Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar); toolbar.setTitleTextColor(Color.WHITE); // 設定をしておく setSupportActionBar(toolbar); // アクションバーの代わり、という設定 これを書かないと、画面上では何も表示されない(空間だけはある) スライドメニューを実装する [部分編集] NavigationDrawer が正式名称? DrawerLayout | Android Developers ナビゲーションドロワーの作成 | Android Developers ドロワーレイアウトを作成する レイアウトxmlにて、DrawerLayout オブジェクトをレイアウトのルートビューとして指定する。 ルートの中にドロワービューとメインビューを設定する順序はメインビューを先にする高さはルートに合わせる(match_parent) 次にドロワーのビューを指定するlayout_gravityを指定する(layout_gravity:どっちにくっつけるか、どちら方向から出てくるか?)右から左に出す場合にはstart layout_heightは親ビューと同じ高さを指定する layout_widthはすべての情報が見える幅を指定する ドロワービューの中身を準備する ListViewで作る ListViewの中に android layout_gravity="..." を入れないと、スライドで入ってくる設定にならず、重ねて見えている状態になる android background="#111" 背景がないと、中途半端にすけた状態で表示される。 別のXMLファイルで作る NavigationViewで作った場合、ヘッダ部分とメニュー部分をそれぞれレイアウトとメニューで作成する app headerLayout="@layout/drawer_header" app menu="@menu/drawer" ドロワーのオープン・クローズを実装する DrawerLayout にリスナーをセットする。このリスナーは DrawerLayout.DrawerListener を実装して、使う。 Activity にアクションバーがセットされている場合は ActionBarDrawerToggle が DrawerLayout.DrawerListener を実装する。 DrawerLayout mDrawerLayout = ...; ActionBarDrawerToggle mDrawerToggle; mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close) { public void onDrawerClosed(View view) {...} public void onDrawerOpened(View drawerView) {...} }; // Set the drawer toggle as the DrawerListener mDrawerLayout.setDrawerListener(mDrawerToggle); 【Android】スライドして表示されるメニュー | Qiita Navigation Drawer の概要 | Android 開発入門 Navigation Drawer の基本的な実装方法 | Android 開発入門 バックグラウンド処理(サービス) サービス - Android Developers Androidアプリでのバックグラウンド処理と通知機能 | Android Studio 2で始めるアプリ開発入門 - CodeZine 流れ Serviceのサブクラスを作成する AndroidManifest.xmlにサービスを登録 サブクラスで、必要なクラスをオーバーライドする。次のあたり。onCreate() onStartCommand() onDestroy() アクティビティからサービスを起動する (きちっと止まるように設計しておく) 閉じられても動作するサービスを動かす バックグラウンドで動作させるためにはServiceを用いる。 Serviceクラスの作成 Activityのように、作成・開始などのイベントで動くが、おもに3つ。 onCreate onStartCommand onDestroy Service | Android Developers Activityから、作成したサービスを動かす startServiceで起動、stopService(stopSelf)で停止。忘れずにServiceを止めないと、いつまでも動き続ける。 startService、stopServiceなどには、インテントを準備して、サービスにそれをなげる形をとっている。 startService - Context | Android Developers stopService - Context | Android Developers stopSelf - Service | Android Developers 加速度センサの情報を受ける 回転角の情報を受け取る センサーは加速度まではそのまま読み取れるが、回転角は加速度情報、地磁気情報から計算する必要がある。まず getRotationMatrix で回転行列を求め、getOrientation で回転行列を回転角に変換する(計算する) getRotationMatric - SensorManager | Android Developers getOrientation - SensorManager | Android Developers 引数に取った2つの配列には、傾斜行列、回転行列(の情報)が計算されて入ってくる。情報が不要ならnullでよい。 回転角の解釈 正位置として Zは天を指す Yは磁北を指す Xは Y,Z の外積を指す 画面の回転を抑制する AndroidManifest.xmlで抑制する 回転させないActivityに android screenOrientation="portrait" を追加すると、縦向き固定になる activity | Android Developers 動的に(プラグラム内で)で抑制する Activity内で、setRequestedOrientation を呼び出す setRequestedOrientation - Activity | Android Developers screenOrientation - ActivityInfo | Android Developers インテントにオブジェクトの情報を乗っける bundleで多くの情報をわたすような方法として、putParcelableArrayList くらいしか見当たらないので、これを使う。そのためには、Parcelable をimplements したようなクラスを作る必要がある。 Bundle | Android Developers parcelable をインプリメントしたクラスをつくる Parcelable実装にはParcelable.Createorというstatic fieldが必要。そのフィールドの初期化にて、Parcelに保存したデータを復元するためのコンストラクタを呼ぶ。 Parcelable | Android Developers Parcelable.Creater フィールドの実装 Parcelable.Creater | Android Developers createFromParcel(Parcel source)Parcelable.writeToParcel() で書き出されたParcelデータをインスタンス化する → コンストラクタを作っておく newArray(int size)ParcelableクラスのArrayを作る BundleやIntentに情報を乗せる IntentならputParcelableArrayListExtra、BundleならputParcelableArrayList で情報を登録 putParcelableArrayListExtra - Intent | Android Developers getParcelableArrayList - Bundle | Android Developers Activity側で受ける IntentならgetParcelableで受けられる。受けたときにすでにParcelableをimplementしたオブジェクトで受けられる。 getParcelableArrayListExtra - Intent | Android Developers getParcelableArrayList - Bundle | Android Developers 複数の情報をリストにして表示する [https //www54.atwiki.jp/api_programming/pages/202.html] バイブレーションを一定時間、作動させる Vibratorインスタンスからvibrate()を実行する。バイブレーションの実施にはAndroidManifest.xmlにパーミッションの追加が必要。 パーミッションの追加 マニフェストにパーミッションを追加する - パーミッションの宣言 | Android Developers Vibratorオブジェクトを生成する getSystemServiceでVibratorオブジェクトを生成する Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); getSystemService - Context | Android Developers Vibrator | Android Developers vibrateを実行する 幾つかパターンはあるが、かんたんなところで、これ。 vibrator.vibrate(500); vibrate - Vibrator | Android Developers 通知バーにバックグラウンド起動中の表示を出す 裏返したときの方向で、記録を分ける メニューのバーを設定する メニューリソースを準備し、表示させる。そのうえで、メニューのタップ動作に対する反応を記述する メニュー | Android Developers メニューリソースを準備する フォルダの作成 デフォルトではメニュー用のフォルダが無い(かもしれない)ので、res/menuを追加し、ここに入れておく。 resフォルダ右クリック [New]>[Android resource directory]を選択 ダイアログで、「Resource type 」から「menu」を選択し、OK リソースファイルの作成 menuフォルダを右クリック [New]>[Menu resource file] ファイル名を入力し、OK ファイル内に menu item / item / /menu を記述(実際はidやタイトルを設定する必要あり) Menu Resource | Android Developers 設定したメニューファイルを、Activityのメニューバーに評させる onCreateOptionMenuをオーバーライドして、この中でリソースの指定などを行う。XMLのメニューを実際?のメニューオブジェクトに変換するのに、inflatorを使用できる。 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); //(1) inflater.inflate(R.menu.menu_options_menu_list, menu); //(2) return super.onCreateOptionsMenu(menu); //(3) } onCreateOptionMenu - Activity | Android Developers メニューの選択を受け取る処理を作る オプションメニューを作っていれば、その受取はonOptionsItemSelectedをオーバーライドして処理できる。 @Override public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); } このとき、itemにクリックされた情報が入っているので、これを紐解いて、どのメニューがクリックされたか判断し、switchなどで処理する。 int itemId = item.getItemId(); Android 3.0(APIレベル11)以降では メニューリソースXMLのitemに、android onClick を記述しておくことで、動作を定義させることもできる。 チェックボックスを動作させる Android/入力コントロール(Controls) 設定画面を設定する/設定情報をローカルストレージに残す Android/設定 記録内容をGoogleスプレッドシートに記録する http //qiita.com/konnobu/items/8bec3d5a45235fc88a08 記録内容をGoogleカレンダーに記録する 多分、クライアント用のライブラリが作られていて、簡単に認証処理をしたり、データを取得したりできるようになっていると思われるが、別サイトでも転用が聞くように、地道な方法を取ってみる。というか、専用のライブラリの使い方をよくわかっていない。 流れは OAuth2.0で認証Google API にプロジェクトと登録(キーの発行) 認証コードを発行 受け取り コードを access token と交換 access token も使って、リクエスト送信 こまごまと引っかかった場所が多数。 AndroidManifest.xmlにパーミッションの設定が必要 ブラウザでURLを開く Android/インテントとインテントフィルタ ブラウザを開くURIとして、認証ページを指定する GoogleのOAuth2認証 OAuth2認証 | Android Developers Step 1 Send a request to Google's OAuth 2.0 server | Google Identify Platform リダイレクトを受け取る 大概の(google 以外でも)場合は、認証後に指定したリダイレクト先に飛ばしてくれる。そのスキーム名に応じて、Android側でどのアプリで開くのかを考えてくれる。Android に「このスキームがきたら、俺のアプリで開いて」と指示するためには、AndroidManifest.xml に記述する必要がある。 scheme // host port / path intent-filter内で、action, category, data を指定する。上記のリダイレクト先に対応する内容を書くのは data で、scheme は data android scheme="com.example.testproject" / のようになる。 Intent の 定数として ACTION_VIEW などが定義されているが、実体は文字列で、それが android.intent.action.VIEW などになる(ので、どれを設定するかはIntent を参照)。ブラウザでどんなスキームがきたらヨソになげるのか、どんな action として投げるのか、説明されている場所がわからないが、ひとまず action ACTION_VIEW category CATEGORY_BROWSABLR scheme ここは各自で で開けた。redirect_uri で scheme //~ が指定できない( /だけ)なので、hostは存在せず、pathだけ。 インテント解決 - インテントとインテント フィルタ | Android Developers Intent - Android Developers 受け取ったリダイレクトをデータに紐解く 一旦受け取れれば、中身は getIntent() を経由して、中身を見られる(Intent.getAction(), Intent.getCategories() など)。OAuth では、path のなかに code を入れて返してくるので、Dataのなかを探せばある Intent intent = getIntent(); String data = intent.getDataString(); とすると、googleの認証で指定した redirect_uri のあとに code がくっついて返ってきている。以下、サンプル com.example.####.#### /oauth2callback?code=4/8abcdefg# 上記の場合、oauth2callback を uri.getPath() で、4/8abcdefg# を getQueryParameter("code") で受け取れる。 getIntent - Activity | Android Developers getData - Intent | Android Developers getQueryParameter - Uri | Android Developers codeを送って、tokenを受け取る コードと必要情報を POST することで、access token との交換をする。この処理は、UIスレッドだとエラーになるので、AsyncTaskで実行する必要がある。 また、交換がうまく行かなかったときは、HttpURLConnection の getInputStream ではなく、 getErrorStream に情報が流れるため、プログラムの確認作業では注意。(この辺をよくわかっていなくて、エラー原因を探すのに苦労した。) redirect_uri はスキームもパスもコード発行依頼時と同じものを使う。 Android/プロセスとスレッド(processes and threads) Async Task | Android Developers tokenを保存する プレファレンスへの保存 終了時間と開始時間から、時間の計算をする リストビューで独自レイアウトを設定する https //www54.atwiki.jp/api_programming/editx/202.html USBデバッグ http //www.aiseesoft.jp/tutorials/android-debug-mode.html リリースビルド http //androidstudio.hatenablog.com/entry/2014/07/26/154043
https://w.atwiki.jp/interaction_android/pages/15.html
@Android Project ここでは、大阪工業大学情報科学部のプロジェクトの1つであるAndroid Project Team[○○]の情報共有Wikiです. 基本的には、何かあればこちらを編集して、情報共有を行っていきたいと思います. 学内課題サイト(学内課題 http //interactiondesign.web.fc2.com/index.html) @目的(作成するもの) @会議結果 第1回 第2回 @方針 基本的にLineかSkypeで行う(リーダーのidea) 時間帯は @メンバー リーダー堤下 裕介 サブリーダー高 潔 プログラムリーダー野田 尚吾 デザインリーダー金元 優香 ビジネスモデルリーダー黒澤 一郎 他のメンバー大井 翔 幸 孝明 加藤 嘉寿 @デザイン @セットアップ セットアップページ @アンケートページ アンケート結果 @更新情報 日 付 内 容 2012/08/01 AndroidProjectページ開設 2012/08/03 Androidセットアップページ開設 2012/08/15 アンケート結果ページ開設
https://w.atwiki.jp/derax7/pages/18.html
Android クリックイベント Button start = (Button) findViewById(R.id.start); start.setOnClickListener(new OnClickListener() { public void onClick(View v) { //処理 } }); 状態保持 // ハイスコア読み込み SharedPreferences pref; pref = this.getSharedPreferences("PreferencesEx", Activity.MODE_PRIVATE); int stage = pref.getInt("stage", 0); // ハイスコアの書き込み pref = getContext().getSharedPreferences( "PreferencesEx", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.putInt("stage", level); editor.commit(); isFinishing()で終了状態取得 isFinishing()を利用すると、Activityの終了状態を判別できる 画面遷移の種類 -Intentを飛ばした場合 false -ホームボタンを押した場合 false -戻るボタンを押した場合 true Androidで音を鳴らす。[SoundPool編] SoundPoolクラスの場合、基本は下記の3処理。 ①SoundPoolを new して、 ②音声ファイル読み込んで、 ③再生する SoundPool soundPool = new SoundPool(5,AudioManager.STREAM_MUSIC, 0); // ① int soundID = soundPool.load(context, R.raw.lalala, 1); // ② soundPool.play(soundID, 1.0F, 1.0F, 1, 0, 1.0F); // ③ 【①の補足】 public SoundPool (int maxStreams, int streamType, int srcQuality) 引数: maxStreams … このSoundPoolオブジェクトで同時に扱う音声(Stream)の最大数 streamType … 音声(stream)の種類。 AudioManagerクラスに定義されている srcQuality … サンプルレートの質。(現在はまだ未使用。 0 を使えとのこと) 返り値: 成功なら、SoundPoolオブジェクト 失敗なら、null 【②の補足】 音声ファイルは、res/raw/lalala.ogg に設置したという想定。ResourceIDは R.raw.lalala になる。ここから想像できると思うが、同フォルダに lalala.wav や lalala.mp3 を設置しても区別がつかない。 ちなみに、音声ファイルを安定再生するためには oggファイルが良いとのこと。 public int load (Context context, int resId, int priority) 引数: context … コンテキスト resId … 音声ファイルのリソースID priority … 優先度サンプルレートの質。(現在はまだ未使用。将来互換性のため 1 を使え) 返り値: sound ID (再生時に使用) 【③の補足】 public final int play (int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate) 引数: soundID … load()メソッドで返される soundID leftVolume … 音量[左] (範囲:0.0~1.0) rightVolume … 音量[右] (範囲:0.0~1.0) priority … ストリーム優先度 (0 = 優先度最低) loop … ループの回数 (0 = ループ無し、-1 = 無限ループ) rate … 再生レート (1.0 = 標準の再生, 範囲:0.5~2.0) 返値 成功なら、streamID(≠0) 失敗なら、0 IntentへのExtra付加 intent.putExtra("hoge", String s); getIntent().getExtras().getString("hoge"); drawableからbitmap変換 Resources res = this.getResources(); // 画像の読み込み Bitmap bm = BitmapFactory.decodeResource(res, R.drawable.blue); Intent時のタスクについて マニフェストでアクティビティに以下のオプションを追加すると、シングルタスク(新タスクを別タスクとして記憶せず、自身に積み重ねる)モードになる。HOME画面等に設定。 android launchMode="singleTask" アイコンの作成 http //android-ui-utils.googlecode.com/hg/asset-studio/dist/index.html Spinnerの初期値設定 spinner.setSelection(0); プログレスダイアログ progressDialog = new ProgressDialog(CoordinateActivity.this); progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); progressDialog.setMessage("処理を実行中です..."); progressDialog.setCancelable(true); progressDialog.show(); (・・・処理・・・) progressDialog.dismiss(); ダイアログのカスタム OnCreateDialog(int id){・・・}内でレイアウト等の適用ができる。ダイアログ生成前に呼び出され、returnでダイアログを返してやる ボタンへのクリックリスナー追加 (Button)btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent intent = new Intent(GalleryActivity.this, Main.class); startActivity(intent); } }); エラー関連 以下のエラーがでた時はどうやらメモリリークっぽい。 端末再起動で直るけど、リーク箇所の特定をしたほうがよさそう Failed to install XXX.apk on device HT0B8RX02778 Too many open files 【View】子Viewの追加&削除 追加:view.addView(child); 削除;view.removeView(child); 全削除:view.removeAllViews(); カメラにIntentを飛ばして起動 // Intent for Camera Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(i, REQUEST_CODE_CAMERA); 保存先はExtraで指定 File tmpPict = new File(Environment.getExternalStorageDirectory(), "/hogehoge/" + System.currentTimeMillis() + ".jpg"); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tmpPict)); 結果をActivityResultで受け取り処理。 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_CAMERA) { 【View】layout.xmlの読み込み setContentView(R.layout.main); これは View v = this.getLayoutInflater().inflate(R.layout.main, null); setContentView(v) と置き換えられる(→addView()などに) 端末画面サイズ取得 WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); Log.d("display", "w " + display.getWidth()); Log.d("display", "h " + display.getHeight()); ロケールの取得 Locale locale = Locale.getDefault(); Log.v("ロケールは", locale.toString()); 以下のようにロケール別に分岐できる if (locale.equals(Locale.JAPAN)) { ・・・・・ } 画面遷移 intentを飛ばして画面遷移 Intent intent = new Intent(this.context, 遷移先.class); startActivity(intent); ※manifestへのactivityの追加を忘れないこと! 【View】idから呼び出し TextView textViewData = (TextView)findViewById(R.id.hoge); textViewData.setText("hogehoge"); onClick()内でのボタン選別 @Override public void onClick(View v) { switch (v.getId()) { case R.id.button_animation Intent intent = new Intent(this, Animation.class); startActivity(intent); break; case R.id.button_sub Intent intent2 = new Intent(this, Sub.class); startActivity(intent2); break; default break; } } SharedPreference云々 SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(this); Editor ed = SP.edit(); AdMob 最近仕様が変わったらしい AdMob導入の注意点 アニメーション private Handler myHandler = new Handler() { @Override public void handleMessage(Message msg) { if (isAttached) { // 移動処理 move(); // 再描画 invalidate(); sendEmptyMessageDelayed(0, DELAY_MILLIS); } } }; http //www.adamrocker.com/blog/181/android_animation.html
https://w.atwiki.jp/negilab/pages/15.html
Androidとは? Android Androidとは、GoogleおよびT-Mobile、HTC、モトローラ、日本からは KDDIやドコモを含む世界34社はオープン携帯プラットフォームを目指す団体「Open Handset Alliance」が開発を進める オープンソースのモバイルプラットフォーム。プログラミング言語はJava言語、開発環境はEclipseを使う。 UIはXMLレイアウトファイルで記述できる。 Androidはメーラー、SMS、カレンダー、地図、ブラウザなどのコアアプリケーションを含んで出荷される。 従来の携帯電話ではネイティブで入れ替えできなかった部分も作成できる模様。 アプリケーション実行環境というよりOSに近い印象を受ける。 特徴は次の通り。 アプリケーションフレームワーク コンポーネントの再利用が可能 Dalvik Virtual Machine モバイル用に最適化 統合ブラウザ WebKitベース グラフィックス 3DグラフィックスはOpenGL ES 1.0ベース SQLite ローカルデータをデータベース形式で保存 メディアサポート MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF GSM通話(機種依存) Bluetooth、EDGE、3G、WiFi(機種依存) カメラ、GPS、コンパス、加速度計(機種依存) デモはtoolsのemulator.exeを実行し、メニュー画面の「Application→App Demo」で閲覧可能。
https://w.atwiki.jp/devemin/pages/13.html
●Activityの回転時の再生成への対応 ①再起動させなければいいので、onConfigurationChanged() メソッドをオーバーライド ②Activityのマニフェストに android configChanges="orientation|keyboardHidden" @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); } http //d.hatena.ne.jp/hyoromo/20090712/1247385249 (Softbank 005SHでは、keyboardHiddenが必要だった。) ●Eclipseの入力補完(オートコンプリート)が遅い件 バージョン3.62にすれば問題ないらしい ●アップデート後など、eclipseが起動しなくなった場合 eclipse\configuration\jp.sourceforge.mergedoc.pleiades フォルダを削除したらOKだった ●Android アプリ開発時、有料・無料の2種プロジェクトを作るTips (ソースを2プロジェクトで共有する方法) こちらを参考にさせてもらいました。 (Androidの無料アプリ・有料アプリを切り替えてビルドする方法) http //d.hatena.ne.jp/eaglesakura/20100629/1277832265 上記URLで書いてあった方法は、部分的に、自分のアプリでは対応できない部分があったので、自分のやった方法で、全体名流れを補足。 まず2つプロジェクトを普通に作る。(基本app-freeと派生app-paid) 2つのパッケージ名はそれぞれ、 com.appli.free com.appli.paid など、最後の1段落のみ変えたりするとわかりやすいかも。 プロジェクト名は、ここでは「app-free」「app-paid」としてみる。 派生プロジェクトpaidでは、src、assets、resディレクトリを、 リンクしたディレクトリとする。 派生プロジェクトapp-paidでは、基本プロジェクトapp-free内の自動生成ファイルR.javaが必要になる。 手動で毎回やるのは酷なので、派生プロジェクトapp-paidビルド時に毎回app-free側のR.javaが自動でコピーされるよう、バッチファイルを作成、プロジェクトのプロパティ、ビルダー、で、ビルド時に毎回実行されるようにする。初回はプロジェクトのクリーンを実行で、×マーク消える。 ${build_project}\rcopy.bat ${build_project} 上記サイトを参考にさせていただきました。 rcopy.bat -------------------------------- @echo off SET PARENT_PROJECT=app-free SET CURRENT_PROJECT=app-paid REM 定義ファイルをコピーする cd ..\%PARENT_PROJECT%\ REM genフォルダをコピーする xcopy /s /e /y .\gen ..\%CURRENT_PROJECT%\gen cd ..\CURRENT_PROJECT\ -------------------------------- リソースを共有するので、有料版、無料版をそれぞれリソースに含めるので、容量はダブって損となる。気にする人は気にするかも?でも自分は利便性を取りました。 @string/app_name @string/app_name_paid @drawable/icon @drawable/icon_paid AndroidManufest.xmlは、アプリそれぞれに設定する。 (パッケージ名、label ) アクティビティ名を、省略名ではなく、 activity android name="light.diary.plus.EditWindow" などにする必要があるかも これらの結果、 app-freeプロジェクト、はほかの通常のプロジェクトとなんら変わりない app-paidプロジェクトは、res, asset, srcがリンクフォルダであり、src内パッケージは「com.appli.free」がある状態。 ×印が消えない場合は、プロジェクトのクリーン&eclipseの再起動、F5キーによるリフレッシュなどをトライ。 (必要に応じて、import light.diary.plus.R; ?) 有料・無料の処理切り分けは、getPackageName()で行う。 ●プログレスダイアログProgress Dialog 既に動いているサンプルをそのまま使うのが吉。 スレッド以外でGUI操作するとメモリエラーとなる。 https //groups.google.com/forum/#!msg/android-group-japan/0YlnSLptx8w/g6kAZuxrR14J 引用 ProgressDialog progressDialog; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); progressDialog = new ProgressDialog(this); /*progressDialog.setTitle("処理中"); progressDialog.setMessage("処理を実行中です"); progressDialog.setIndeterminate(false); progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); progressDialog.show();*/ Thread thread = new Thread(this); thread.start(); } public void run() { // 時間のかかる処理をここに記述。 try { progressDialog.setTitle("処理中"); progressDialog.setMessage("処理を実行中です"); progressDialog.setIndeterminate(false); progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); handler.post(new Runnable() { @Override public void run() { progressDialog.show(); } }); Thread.sleep(5000); } catch (InterruptedException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } handler.sendEmptyMessage(0); } private Handler handler = new Handler() { public void handleMessage(Messa ●ADTアップデート等エラーのときのEclipse クリーン http //www.hlplus.jp/php/blog/index.php?UID=1298450960 名前 コメント
https://w.atwiki.jp/sevenlives/pages/1564.html
Linux Kernel? Hardware Abstraction Layer Androidランタイム? Java API フレームワーク? OHA? AIDL? Dalvik VM Androidランタイム? ART? アンドロイド・マーケット? Intent? Over The Air? ブラウザ(Android) Droid Font? Board Support Package? Trebleプロジェクト? Google Play? Android Studio? Android SDK? ■ アプリケーション・フレームワーク Activity Manager? Window Manager? Content Provider? Package Manager? View System? Resource Manager? Location Manager? Notification Manager? ■ Android UI Action Bar Activity(Android) Fragments(Android) Droid Font? Android 2.X? Android 3.X? Android 4.X Android Cupcake? Android Donut? Android Eclair? Android Froyo? Android Gingerbread? Android Honeycomb? Android Ice Cream Sandwich? Android Jelly Bean? Android KitKat? Android Lollipop? Android Marshmallow? Android Nougat? Android Oreo Google HAXM
https://w.atwiki.jp/interaction_android/pages/26.html
Androidのセットアップ ここでは、簡単にセットアップについて述べます (1)必要なファイル android-sdk_r17-windows.zip lpls159.exe(解凍ソフトがない場合) RapidEE_setup.exe(環境変数の設定を簡単にしたい方) (2)x64(64bit版) jdk-7u3-windows-x64.exe eclipse-jee-indigo-SR2-win32-x86_64.zip (3)x86(32bit版) jdk-7u3-windows-i586.exe eclipse-java-indigo-SR2-win32.zip 1.解凍ソフトPCに解凍ソフトが入っていない場合は「lpls159.exe」により「Lhaplus」をインストール 2.環境変数変更ソフト環境変数を簡単に変更できるように「RapidEE_setuo.exe」をクリックし、「RapidEE」をインストール 3.Java環境のセットAndroidないしEclipseはJava環境が必要なので「jdk-7u3-windows-i586.exe」によりJavaをインストールする。 項目はすべてはいないしOK 4.Cドライブの直下に「Android」フォルダを作成C \Androidとなるように 5.解凍「android-sdk_r17-windows.zip」と「eclipse-java-indigo-SR2-win32.zip」をAndroidフォルダで解凍 6.SDKのインストール「SDK Manager.exe」をクリックし、Android SDKをインストール。 すべてにチェックを入れてInstallする 7.環境パスの設定「RapidEE」を起動し、以下の分をPathの中に追加する(Add Value)。 C \Android\android-sdk-windows\platform-tools(SDKのフォルダ名によってandroid-sdk-windowsは変更すること) C \Android\android-sdk-windows\tools(SDKのフォルダ名によってandroid-sdk-windowsは変更すること) C \Program Files\Java\jdk1.7.0_03\bin C \Program Files\Java\jre7\bin 8.Eclipseの起動1~7インストール後、Eclipseの[Help]→[Install Software...]をクリック ADDをクリックし、[Android Plugin] と [https //dl-ssl.google.com/android/eclipse/]を記述しNextを押していく 再起動されればOK 9.完了これで、Androidの環境開発完了 仮に、エミュレータを作成し、実行する。ここで、エミュレータのバージョンがすべてないときは[Windows]→[Preferences]→[Android]のSDL LocationをSDKを入れたフォルダに変更 10.環境セット[Windows]→[Preferences]→[General]→[Workspace]にて文字コードを[UTF-8]に変更すること
https://w.atwiki.jp/android/pages/48.html
2008/04/15 Android Developer Challenge締め切り。 2008/03/25 「Android」搭載端末、早くも2008年秋には登場か?--グーグル幹部が発言 2008/03/23 ドコモ携帯、基本ソフトの設計簡素化へ DoCoMoでAndroid採用が決定? 2008/02/18 WCMフォーラムの会員一覧が更新。OHA企業が参加 WILLCOMコアモジュールフォーラムの会員にOHA参加企業のリビングイメージという会社が参入した模様。WILLCOMからAndroid携帯が出る可能性が出てきた。 2008/02/12 Android SDKアップデート 結構変わってます。今までのアプリを新しいSDK(m5-rc14)で動かすには再コンパイル(?)が必要です。 2008/02/11 Mobile World CongressにてAndroidの実機がぞくぞく出展された 【MWC2008】「Android」搭載プロトタイプ、半導体メーカーがこぞって出展 Android実機を披露した主な企業米フリースケール・セミコンダクタ NECエレクトロニクス 米クアルコム ルネサス テクノロジ 米テキサス・インスツルメンツ 2008/02/04 ハドソン、ゲームソフトをグーグル携帯に提供 ゲーム開発のハドソンは米グーグルが提供予定の携帯電話ソフトウエア群「アンドロイド」向けに、ゲームソフトなどの娯楽コンテンツ(情報の内容)を開発する。グーグルの携帯電話はNTTドコモなどが導入を検討しているが、国内コンテンツ大手の参入が明らかになったのは初めて。 2008/01/28 Deadline Extension for the Android Developer Challenge コンテストの締め切り延長と詳細日程の発表される (この時点から)数週間以内にUIとAPIが強化されたSDKをリリースするとのこと。 2008/04/14 Deadline to submit applications for judging 応募締め切り 2008/05/05 Announcement of the 50 first round winners, who will be eligible for the final round 1回戦の上位50人を発表 2008/06/30 Deadline for the 50 winners of the first round to submit for the final round 最終戦の締め切り 2008/07/21 Announcement of the grand prize winner and runner-up 優勝者および優秀者の発表 2008/01/24 ドコモとグーグル、iモード端末でグーグルのサービス利用可能に 「Androidプラットフォームに関しても両社で協力し、ドコモでの商用化を含む検討が進められる」と発表 2008/01/14 Google Android対応の初アプリケーション登場 初ってことはないと思うけど、OHA参加以外の企業で実機で自社アプリを動かしたのは初? 2007/12/28 ビルド済みバイナリでもAndroid Zaurusが可能に 2007/12/25 ドコモ、グーグルと提携・ネット検索メールなど、新サービス開発 この時点ではAndroidとの係わりは不明。 2007/12/15 Android SDKアップデート(英語) 2007/12/6 WILLCOMコアモジュールフォーラム、AndroidでW-SIMの通話デモ Androidをザウルスに載せた(英語) 2007/11/27 WILLCOMコアモジュールフォーラム、Androidの動作を確認 2007/11/17 Androidでスーパーマリオ(ファミコン/NES)が動いた。 2007/11/12 GoogleのAndroidプラットフォーム SDK公開 Google、Android向けアプリ開発コンテストを主催、賞金1000万ドル コンテストまとめ 2007/11/5 Googleほか34社、オープン携帯プラットフォーム「Android」を発表
https://w.atwiki.jp/sindroid/pages/13.html
あんどろいどなぺぇじ さて何を書こうか。 アンドロイドの構成 インストールからエミュレータ起動まで (ver 2.0用 以前のバージョンだとまた違うぽい。) ここからSDKをダウンロード →解答して適当なとこに置く →パスを通す(¥toolsまで) →プロンプトからandroidと入力するとAVDマネージャ起動 →Available Packagesからインストール ・ここで何もインストールするファイルがみつからない場合がある。 /.androidにandroidtool.cfgファイル作ってsdkman.force.http=trueと入れておくと解決するはず。 ・インストールがNothingとか出たらSDKの位置変えてみる。 (C直下とか。管理者権限だとか何か知らんけどProgram Files以下に置いてたら駄目だった。) →Virtual Devicesでデバイス作成 →そこからStartで起動 SDKリファレンス 既存バグとか チップス 他